package com.fenyin.samples.study.rmi.example1.server;  

import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.bj58.samples.study.rmi.example1.service.IHelloService;
import com.fenyin.samples.study.rmi.example1.service.HelloService;

/**
 *@Title:  RMI服务端程序包
 *@Description:  简单服务端
 *@Author:fengzhichao  
 *@Since:2012-9-20  
 *@Version:1.1.0
 */
public class Server {
	
	private static final Log log = LogFactory.getLog(Server.class);
	
	public static void main(String[] args){
		try{
			log.info("--------程序方式启动rmi服务器start-----------");
			//启动RMI注册服务，指定端口为1099　（1099为默认端口）   
	        //也可以通过命令 ＄java_home/bin/rmiregistry 1099启动   
	        //这里用这种方式避免了再打开一个DOS窗口   
	        //而且用命令rmiregistry启动注册服务还必须事先用RMIC生成一个stub类为它所用
			LocateRegistry.createRegistry(1099);
			log.info("--------创建服务并绑定服务到rmi服务器-----------");
			//创建远程对象的一个或多个实例，下面是hello对象   
	        //可以用不同名字注册不同的实例
			IHelloService helloService = new HelloService("hello,world!");
			//把hello注册到RMI注册服务器上，命名为Hello
//			Naming.rebind("hello", helloService);
			//如果要把hello实例注册到另一台启动了RMI注册服务的机器上   
			Naming.rebind("rmi://localhost:1099/hello", helloService);
			log.info("--------程序方式启动rmi服务器end-----------");
		}catch(Throwable th){
			log.error("server is error:",th);
		}
	}
}
